Method, system, computer program product and program storage device for declaring column widths of matrices

ABSTRACT

A system and method for enabling a developer to write a computer program that, when executed, displays a matrix on a computer display device, and a system and method for displaying a matrix on a computer display device. The system receives a request from the developer to create a matrix having rows and columns, where the widths of the columns are defined using a declarative column specification string. This specification string, and optionally, a programming algorithm that modifies or recreates the specification string, are stored in the system. A user then executes a computer program in the system. During execution, a number of events may occur in response to which the utility and usability of the matrix may be improved by adjusting the widths of the columns in the matrix. The invention resizes the width of each column in the matrix according to the column specification string.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a method and apparatus for declaringcolumn widths for matrices. Specifically, the present invention relatesto a method and apparatus for declaring column widths in a graphicaluser interface (GUI). More particularly, the present invention relatesto a computer program that assists an application developer to easilyadjust the widths of matrices, such as when a matrix has been resized bya user or by an algorithm in the application or when any other eventoccurs in response to which the utility and usability of the matrix maybe improved by adjusting the widths of columns in the matrix.

2. Related Art

Many visual builders in software applications have a tool bar, throughwhich application developers may choose a variety of tools to use inconstructing an image on the GUI. The application developer may thenincorporate this image into a computer program. One tool common to manyapplications is a matrix tool. A matrix, also typically referred to as agrid or sheet, is a GUI object that can display application data in atwo-dimensional array of rectangular cells. The matrix tool permits thedeveloper to create a matrix component. The matrix component lets theapplication developer display columnar data in a scrolling matrix havingcolumns and rows. Typically, the matrix also has fixed columns and fixedrows that cannot be scrolled.

During program development, the application developer typically choosesthe number of columns and rows for the particular matrix and sets columnwidths for the matrix. These column widths are set during development,set by algorithms at runtime, or adjusted manually (using drag and droptechniques with a mouse) at runtime by the user.

In text-formatting applications, a writer may set the width of columnsin a table. A table in such applications is similar to a matrix, exceptthat it is printed (to the screen or paper) rather than displayed as aseparate graphical object on a computer display. Thus, when the end userprints the table, the width of each column is adjusted to accommodatethe size of the printed page or column in which the table appears. Someof these text-formatting applications use General Markup Language (GML)to specify the column width of the printed table. In the IBM BookMaster™product, for example, a writer declares the widths of columns in a tableusing a cols attribute of a table tag:

    :table cols=`* *`.

The string "* *" is a declarative column width specification for twocolumns of equal width.

In spreadsheet applications, the spreadsheet also displays data in atwo-dimensional array of cells whose widths can be adjusted by the useror by commands in a macro.

SUMMARY OF THE INVENTION

The present invention applies the concept of the BookMaster colsattribute to GUI matrices and expands the column string specification byadding options to the specification string. The present inventionenables an application developer to write a computer program that, whenexecuted, displays a matrix on a computer display device. The inventionautomatically adjusts the column widths of the matrix in a GUI torespond to the user's changes to the size of the matrix or to changes inthe lengths of the data displayed in the matrix.

During the program development stage of the invention, an applicationdeveloper sends a request to the system to create a matrix. Theapplication developer then chooses a specific number of rows and columnsfor the matrix. The application developer may choose to make some or allof the rows or columns fixed. The application developer then defines thewidth of each of the columns using a column specification string. In thepreferred embodiment, the application developer specifies this string asthe value of a property of the matrix. However, the specification may besimply the value of a global variable that is passed to a function thatadjusts the column widths. The specification string may also be createdor modified during program execution by an algorithm previously designedby the application developer. The application developer can indicate afixed size for a column by using horizontal units (explicit lengthoption) or a text string literal length option). The developer canindicate an adjustable width option by using a variety of symbols (e.g.,an asterisk option, an equal option or a double equal option). Thedeveloper can also indicate that a specific column must retain itscurrent size using the exclamation mark option. The informationconcerning the number of rows and columns in the matrix and a columnstring specification or an algorithm for creating a column stringspecification for the matrix are then stored in the system.

A user then executes the program to initiate a program execution phaseof the invention. The user may send a request to the system to resizethe matrix by clicking and dragging on the matrix or on the graphicalwindow in which the developer has placed the matrix. This requesttriggers a resize event. When the program detects a resize event, itcalls the widths function. Alternatively, the application developer mayprogram the application to readjust the column widths when the data inthe matrix changes. This is referred to as a change event. When theprogram detects a change event, it calls the widths function. The widthsfunction then uses the column string specification to resize the widthof each column in the resized matrix.

Preferred embodiments of the present invention are now described withreference to the figures where like reference numbers indicate identicalor functionally similar elements. Also in the figures, the left mostdigit of each reference number corresponds to the figure in which thereference number is first used. While specific steps, configurations andarrangements are discussed, it should be understood that this is donefor illustrative purposes only. A person skilled in the relevant artwill recognize that other steps, configurations and arrangements can beused without departing from the spirit and scope of the invention.

BRIEF DESCRIPTION OF THE FIGURES

The foregoing and other features and advantages of the invention will beapparent from the following, more particular description of a preferredembodiment of the invention, as illustrated in the accompanyingdrawings:

FIG. 1 shows a diagram of the apparatus of the present invention;

FIG. 2 shows a block diagram of the steps taken by the softwaredeveloper to construct a matrix having a plurality of columns;

FIG. 3 shows a block diagram of the steps taken by the user to triggerthe resize event and resize the columns of the matrix;

FIG. 4 shows a matrix 402 of the present invention before a resizeevent; and

FIG. 5 shows a first resized matrix 502 of the present invention after aresize event of matrix 402.

FIG. 6 shows a second reed matrix 602 of the present invention after aresize event of matrix 402.

FIG. 7 shows a block diagram of the steps taken by the user to trigger achange event and resize the columns of the matrix.

FIG. 8 shows a matrix 802 of the present invention before a changeevent.

FIG. 9 shows the matrix 802 of the present invention after a changeevent.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention relates to an apparatus and method for declarativecolumn specification for matrices. Thus, a developer may use the presentinvention to specify the width for each column in a matrix using astring specification. Then, when a resize or change event occurs inresponse to which the display and utility of the matrix may be improvedby adjusting the widths of the columns in the matrix, such as when theuser resizes the matrix or changes the data in the matrix, each columnis automatically resized to fit the matrix according to the stringspecification.

In one embodiment, the invention is directed to a computer systemoperating as discussed herein. An exemplary computer system 100 is shownin FIG. 1. Computer system 100 includes one or more processors, such asprocessor 102. Processor 102 is connected to a communication bus 104.

Computer system 100 also includes a main memory 106, preferably randomaccess memory (RAM), and a secondary memory 108. Secondary memory 108includes, for example, a hard disk drive 110 and/or a removable storagedrive 112, representing a floppy disk drive, a magnetic tape drive, acompact disk drive, etc. Removable storage drive 112 reads from and/orwrites to a removable storage unit 114 in a well-known manner.

Removable storage unit 114, also called a program storage device or acomputer program product, represents a floppy disk, magnetic tape,compact disk, etc. As will be appreciated, removable storage unit 114includes a computer usable storage medium having stored therein computersoftware and/or data.

Computer programs (also called computer control logic) are stored inmain memory and/or secondary memory 108. Such computer programs, whenexecuted, enable computer system 100 to perform the features of thepresent invention as discussed herein. In particular, the computerprograms, when executed, enable procssor 102 to perform the features ofthe present invention. Accordingly, such computer programs representcontrollers of computer system 100.

In another embodiment, the invention is directed to a computer programproduct comprising a computer readable medium having control logic(computer software) stored therein. The control logic, when executed bythe processor 102, causes the processor 102 to perform the functions ofthe invention as described herein.

In another embodiment, the invention is implemented primarily inhardware using, for example, a hardware state machine. Implementation ofthe hardware state machine so as to perform the functions describedherein win be apparent to persons skilled in the relevant art(s).

The present invention is preferably implemented within the environmentof a visual builder application program. A visual builder applicationprogram is a GUI that provides tools for developing computerapplications. The visual builder application program typically includesintegrated utilities for editing, compiling or interpreting, anddebugging programming code, and includes interfaces for using andcustomizing pre-built components. These pre-built components includeboth graphical components, such as push buttons, list boxes, andmatrices, and nongraphical components, such as function libraries. Thevisual builder application program supports the development and testphases of application development. It is typically accompanied by aruntime product or components or set of libraries that supports theexecution phase of the application.

FIG. 2 is a block diagram of a program development stage of theinvention. According to the invention, the visual builder applicationprogram, when executed, provides the application developer with severalchoices of tools for writing computer programs. One of these toolscreates matrix components. The application developer chooses the matrixtool at step 202. The visual builder application program then executes acreate event 204 to generate the matrix. After create event 204 isexecuted, the application lets the developer set the number of columnsand rows in the matrix at step 206. Additionally, the application letsthe developer set the width of each column at step 208 using a columnspecification string. This string specification will be discussed infurther detail below.

The visual builder application program then writes appropriate computercode to the computer program to incorporate the matrix (as defined bythe application developer) therein at step 210. The code for thecomputer program is written to contain a widths function for adjustingthe width of the columns in the matrix. Alternatively, the computerprogram may contain calls to the widths function, where this function ispart of a library (such as a dynamic link library). Details of thecomputer program code will be apparent to persons skilled in therelevant art(s) based on the discussion contained herein.

The widths function receives, as input, a reference to a matrix and thecolumn specification string. In the preferred embodiment, the columnstring specification is stored in the matrix object and the widthsfunction is implemented in the C++ programming language as a method ofthe matrix object. However, it will be obvious to persons skilled in therelevant art(s) that several other programming languages could be used.

FIGS. 3 and 7 show block diagrams of the steps taken by the user totrigger a resize event or a change event, respectively, of a programexecution stage of the invention. The user begins by executing theprogram at steps 302 and 702. During execution of the program, the usermay resize the entire matrix to make it larger or smaller on thecomputer display monitor by clicking on a corner of the window (notshown) that contains the matrix and dragging the corner of the window toa new position on the GUI, referred to as a drag-and-drop event. Thisstep is shown in block 304. Alternatively, the user may change thematrix by initiating a process that results in having the matrix displaynew data. This step is represented in block 704. When the user resizesthe matrix, or when the data in the matrix changes, a resize or changeevent is raised by the program in steps 306 and 706, respectively. Theprogram then calls or triggers the widths function at steps 308 and 708.The widths function uses the column specification string, originallyentered by the developer or entered by the developer and modified by aprogram algorithm, entered by the application developer, before callingthe widths function, or created entirely by a program algorithm beforecalling the widths function, to adjust the column width for each columnto optimally display the data in the matrix, as shown in steps 310 and710. In an alternate embodiment, the user can modify the column stringspecification or perform actions determined by the developer that resultin modifications of the column specification string.

In the preferred embodiment, several predefined symbols can be used bythe developer in the column string specification when defining the widthof the columns in the matrix. These symbols are recognized by the widthsfunction as denoting individual resize options. It should be apparent tothose skilled in the art that any symbol may be used in place of thesymbols described below to cause the widths function to perform thestring command.

In the preferred embodiment, the developer can describe column width inthe column string specification using an explicit length. This type ofcolumn specification defines the column in horizontal space units, suchas inches or picas. During the resize or change event, the width of acolumn designated with an explicit length does not change, if the columnalready has the specified length.

The developer can also define a column width using an asterisk. Anasterisk sizes the width of column so that the remaining space in theresized matrix is assigned to this column. If more than one asterisk isused in a string specification, the function divides the remaining spacein the resized matrix equally among the columns designated withasterisks. For example, FIG. 4 shows a matrix 402 of the presentinvention before the resize event. Matrix 402 is shown displayed on acomputer display device (or monitor) 404 and is surrounded by a window406. Matrix 402 has three rows 408 and three columns 410. In thisexample, the column string specification is "* * *" for columns 1, 2 and3, respectively. The width of matrix 402 is divided equally amongcolumns 408, as denoted in FIG. 4 by the horizontal width x.

FIG. 5 shows a first resized matrix 502 after a resize event. In thisexample, the user performed a drag-and-drop event on window 504 toenlarge the matrix. As shown, the widths function divides the width ofresized matrix 502 in three equal parts, each part denoted by thehorizontal width x'. Thus, columns 506 are resized so that each columnreceives one equal part.

FIG. 6 shows a second resized matrix 602, after a resize event hasoccurred, in which a window 604 was enlarged by the user. Multipliersmay be used in front of an asterisk to divide the remaining space inresized matrix 602 proportionally among its columns 606 designated withasterisks according to the multipliers. For example, a column stringspecification may be defined as "n* * t*" for columns 1, 2 and 3,respectively, where n and t are positive rational numbers. In FIG. 6,n=2 and t=3. The widths function divides the space in resized matrix 602into six equal parts. The first column 608 receives two equal parts(denoted by 2x"), the second column 610 receives one equal part (denotedby x") and the third column 612 receives three equal parts (denoted by3x"). In another example (not shown), the column string specificationcommand is defined as "10 * 10" for columns 1, 2 and 3, respectively.The widths function subtracts from the width of the resized matrix, the10 units designated for the first column and the 10 units designated forthe third column. The function will then assign to the second column theremaining space in the resized matrix. Thus, if the resized matrix has atotal of 50 horizontal units, column 1 is assigned 10 units, column 2 isassigned 30 units and column 3 is assigned 10 units.

The visual builder application also allows the application developer todesignate fixed columns and fixed rows in the matrix. These fixedcolumns and rows do not scroll across the screen with the other columnsand rows. Instead, these columns and rows remain fixed in theirdesignated location in the matrix. Fixed columns and rows are typicallyused for labelling each of the columns and rows in the matrix. In thepresent invention, the developer can define a column width in the columnstring specification as a function of the width of the data in the fixedrow or rows of the column to be resized.

In the preferred embodiment, the developer can define the width of acolumn by using an equal sign. The widths function reserves enough spacein the resized column to accommodate the length of the longest textstring among the fixed rows in that specific column. For example, if amatrix has ten fixed rows, the widths function will check each fixed rowto see which row has the longest text string. The equal sign in thecolumn string specification will cause the widths function to resize thecolumn with a width large enough to accommodate that text string.Because the user may manipulate the data in the matrix at any timeduring the program, the widths function checks each fixed row after eachresize event to determine the longest text string at that time. Thus,the use of the equal sign in the column string specification provides adeclarative width specification that depends on the current size of thelongest text string in the fixed rows of the matrix.

Another symbol that can be used to dynamically define a column width asa function of the longest text string in the resized column is a doubleequal sign. The application developer may use a double equal sign or"==" in the column string specification to designate a column having awidth equal to the maximum width of the text strings in the column.Thus, if the longest text string in the column in the matrix is 10horizontal units, a double equal sign in the column string specificationfor that column will cause the widths function to resize that column tohave a width of 10 horizontal units. Additionally, as in the equal signcommand described above, the widths function checks the contents of thecolumn after detection of each resize or change event to determine thelongest text string in the column at that time.

FIG. 8 shows a matrix 802 of the present invention before a changeevent. Matrix 802 is surrounded by window 804, and has three columns806, 808 and 810 of equal width. The width of each column is denoted byan X. The column string specification for matrix 802 reads "== * *". Asshown in FIG. 8, the "data" in the column 806 is equal to X horizontalunits. The remaining width in matrix 802 is divided equally amongcolumns 808 and 810.

FIG. 9 shows matrix 802 after a change event. The change event wastriggered when the user caused "new data" to be entered into column 806.The program detects the change in data in the matrix and uses the stringspecification to adjust the width of the columns. Because the column 806is designated with the double equal option, it is enlarged toaccommodate the size of the "new data" in that column. The adjustedwidth of column 806 is denoted by the horizontal units Y. The remainingwidth in matrix 802 is divided equally among columns 808 and 810. Theadjusted width of columns 808 and 810 are denoted by the horizontalunits Z.

An application developer may also designate column width in a matrix byusing a literal option in the column specification string. This literaloption allows the application developer to set the column width to equalthe width of a "word" included in the column specification string, wherea "word" is an arbitrary sequence of non-blank characters. For example,the application developer could use the literal option to set the columnwidth equal to the width, in horizontal units, of the word "LABEL."Thus, the application developer may simply enter the word in the stringspecification, as in, for example, "* LABEL *".

Finally, the application developer may use an exclamation point or "|"in the column string specification to leave the widths of specifiedcolumns unchanged during a resize or change event. In the presentinvention the user may manually adjust the width of an individual columnby performing a drag-and-drop event on that column. The program can thendetect the drag-and-drop event in which the user manually adjusts thewidth of a column. In the preferred embodiment, the applicationdeveloper can write code in the drag-and-drop event handler tosubstitute an exclamation point for the current option designated in thestring specification for the resized column. This code win result in anew string specification such as, for example, "* | *". In this example,the exclamation point option directs the widths function to leave thewidth of the second column unchanged, and to adjust the widths ofcolumns 1 and 3 to accommodate the widths left or taken up by the user'smanual adjustment of column 2.

If the widths function (with or without the exclamation point option) isnot used in a drag-and-drop event handler, and the user manually adjustscolumn 2, then the column width remains as the user adjusted it untilthe next event occurs that calls the widths function.

The widths function is also programmed with a minimum column-width. Inthe preferred embodiment, this width can be set by the developer. If thedeveloper does not set a minimum width, the system defaults to a widthof 100 twips, where a twip is 1/1440th of an inch. Thus, if the columnstring specification specifies a width less than the minimum width, thenthe minimum width is used instead.

If the string specification includes an asterisk and there is no roomleft for the column, the widths function lets the column keep itscurrent width, if it is greater than the minimum width value. Forexample, the column string specification command reads "* 10 20" forcolumns 1, 2 and 3, respectively. In the original matrix, having ahorizontal width of 50 units, column 1 is 20 units, column 2 is 10 unitsand column 3 is 20 units. However, if the user resizes the matrix to awidth of 30 units, there is no space left for column 1 after subtractingthe widths for columns 2 and 3 from the resized matrix. Thus, the widthsfunction causes a scroll bar to appear on the matrix, and column 1retains its width of 20 units. However, now the user must scroll thematrix to see all the columns in the matrix. Because the combined columnwidths are greater than the resized matrix width, the columns are notall visible on the matrix.

While the invention has been particularly shown and described withreference to preferred embodiments thereof, it will be understood bythose skilled in the art that various changes in form and details may bemade therein without departing from the spirit and scope of theinvention.

What is claimed is:
 1. A method for enabling a developer to write acomputer program that, when executed, displays a matrix on a computerdisplay device, comprising the steps of:receiving from a developer arequest to build a matrix having a plurality of rows and columns;receiving from the developer a string specification for the width ofeach of said plurality of columns in said matrix; and storing code inthe computer program corresponding to said request and said stringcommand.
 2. The method of claim 1, wherein said string specificationcomprises an asterisk option, said asterisk option causing one of saidplurality of columns to be resized to a width equal to the remainingwidth of said resized matrix.
 3. The method of claim 1, wherein one ofsaid plurality of rows comprises a fixed row.
 4. The method of claim 3,wherein said string specification comprises an equal option, said equaloption causing one of said plurality of columns to be resized to a widthequal to the width of the longest text string in said fixed row in saidcolumn.
 5. The method of claim 1, wherein said string specificationcomprises a double equal option, said double equal option causing one ofsaid plurality of columns to be resized to a width equal to the width ofthe longest text string in said column.
 6. The method of claim 1,wherein said string specification comprises a literal width option, saidliteral width option causing one of said plurality of columns designatedwith said literal width option to be resized to a width that equals thewidth of a word.
 7. The method of claim 1, wherein said stringspecification comprises an exclamation point option, said exclamationpoint option causing one of said plurality of columns to retain itscurrent width.
 8. A method, embodied in a computer program, fordisplaying a matrix on a computer display device, the matrix having aplurality of rows and columns, comprising the steps of:executing thecomputer program; receiving a resize or change event; and using aspecification string, wherein the string specification was previouslydefined by a developer, to resize the width of each of said columns inaccordance with the width of data in said resized or changed matrix. 9.The method of claim 8, wherein said string specification comprises anasterisk option, said asterisk option causing one of said plurality ofcolumns to be resized to a width equal to the remaining width of saidresized matrix.
 10. The method of claim 8, wherein one of said pluralityof rows comprises a fixed row.
 11. The method of claim 10, wherein saidstring specification comprises an equal option, said equal optioncausing one of said plurality of columns to be resized to a width equalto the width of the longest text string in said fixed row in saidcolumn.
 12. The method of claim 8, wherein said string specificationcomprises a double equal option, said double equal option causing one ofsaid plurality of columns to be resized to a width equal to the width ofthe longest text string in said column.
 13. The method of claim 8,wherein said string specification comprises a literal width option, saidliteral width option causing one of said plurality of columns designatedwith said literal width option to be resized to a width that equals thewidth of a word.
 14. The method of claim 8, wherein said stringspecification comprises an exclamation point option, said exclamationpoint option causing one of said plurality of columns to retain itscurrent width.
 15. A system for enabling a developer to write a computerprogram that, when executed, displays a matrix on a computer displaydevice, said system comprising:means for receiving from a developer arequest to build a matrix having a plurality of rows and columns; meansfor receiving from the developer a string specification for the width ofeach of said plurality of columns in the matrix; and means for storingcode in the computer program corresponding to said request and saidspecification string.
 16. The system of claim 15, wherein said stringspecification comprises an asterisk option, said asterisk option causingone of said plurality of columns designated with said asterisk option tobe resized to equal the remaining width of said resized matrix.
 17. Thesystem of claim 15, wherein one of said plurality of rows comprises afixed row.
 18. The system of claim 17, wherein said string specificationcomprises an equal option, said equal option causing one of saidplurality of columns designated with said equal option to be resized toa width equal to the width of the longest text string in said fixed rowin said column.
 19. The system of claim 15, wherein said stringspecification comprises a double equal option, said double equal optioncausing one of said plurality of columns designated with said doubleequal option to be resized to a width equal to the width of the longesttext string in said column.
 20. The system of claim 15, wherein saidstring specification comprises a literal width option, said literalwidth option causing one of said plurality of columns designated withsaid literal width option to be resized to a width that equals the widthof a word comprising said literal width option.
 21. The system of claim15, wherein said string specification comprises an exclamation pointoption, said exclamation point option causing one of said plurality ofcolumns to retain its current width.
 22. A method for displaying amatrix on a computer display device, comprising the steps of:executing acomputer program; receiving a resize or change event; and using aspecification string, wherein the string specification was previouslydefined by a developer, to resize the width of a plurality of columns inaccordance with the width of the resized or changed matrix.
 23. Themethod of claim 22, wherein said string specification comprises anasterisk option, said asterisk option causing one of said plurality ofcolumns to be resized to a width equal to the remaining width of saidresized matrix.
 24. The method of claim 22, wherein one of saidplurality of rows comprises a fixed row.
 25. The method of claim 24,wherein said string specification comprises an equal option, said equaloption causing one of said plurality of columns to be resized to a widthequal to the width of the longest text string in said fixed row in saidcolumn.
 26. The method of claim 22, wherein said string specificationcomprises a double equal option, said double equal option causing one ofsaid plurality of columns to be resized to a width equal to the width ofthe longest text string in said column.
 27. The method of claim 22,wherein said string specification comprises a literal width option, saidliteral width option causing one of said plurality of columns designatedwith said literal width option to be resized to a width that equals thewidth of a word.
 28. The method of claim 22, wherein said stringspecification comprises an exclamation point option, said exclamationpoint option causing one of said plurality of columns to retain itscurrent width.
 29. A computer program product for use with a computerdisplay device, said computer program product comprising:a computerusable medium having computer readable program code means embodied insaid medium for enabling a developer to write a computer program that,when executed, displays a matrix on a computer display device, saidcomputing readable code means having:a computer readable program codemeans for receiving from a developer a request to build a matrix havinga plurality of rows and columns; a computer readable program code meansfor receiving from the developer a specification string for the width ofeach of said plurality of columns in said matrix; and a computerreadable program code means for storing code in the computer programcorresponding to said request for said string command.
 30. The computerprogram product of claim 29, wherein said specification string comprisesan asterisk option, said asterisk option causing one of said pluralityof columns to be resized to a width equal to the remaining width of saidresized matrix.
 31. The computer program product of claim 29, whereinone of said plurality of rows comprises a fixed row.
 32. The computerprogram product of claim 31, wherein said specification string comprisesan equal option, said equal option causing one of said plurality ofcolumns to be resized to a width equal to the width of the longest textstring in said fixed row in said column.
 33. The computer programproduct of claim 29, wherein said specification string comprises adouble equal option, said double equal option causing one of saidplurality of columns to be resized to a width equal to the width of thelongest text string in said column.
 34. The computer program product ofclaim 29, wherein said specification string comprises a literal widthoption, said literal width option causing one of said plurality ofcolumns designated with said literal width option to be resized to awidth that equals the width of a word.
 35. The computer program productof claim 29, wherein said specification string comprises an exclamationpoint option, said exclamation point option causing one of saidplurality of columns to retain its current width.
 36. A computer programproduct for use with a computer display device, said computer programproduct comprising:a computer usable medium having computer readableprogram code means embodied in said medium for displaying a matrix on acomputer display device, said matrix having a plurality of rows andcolumns, and said computing readable code means having:a computerreadable program code means for executing the computer program; acomputer readable program code means for receiving a resize or a changeevent; and a computer readable program code means for using aspecification string, wherein the string specification was previouslydefined by a developer, to resize the width of each of said columns inaccordance with the width of said resized or changed matrix.
 37. Thecomputer program product of claim 36, wherein said specification stringcomprises an asterisk option, said asterisk option causing one of saidplurality of columns to be resized to a width equal to the remainingwidth of said resized matrix.
 38. The computer program product of claim36, wherein one of said plurality of rows comprises a fixed row.
 39. Thecomputer program product of claim 38, wherein said specification stringcomprises an equal option, said equal option causing one of saidplurality of columns to be resized to a width equal to the width of thelongest text string in said fixed row in said column.
 40. The computerprogram product of claim 36, wherein said specification string comprisesa double equal option, said double equal option causing one of saidplurality of columns to be resized to a width equal to the width of thelongest text string in said column.
 41. The computer program product ofclaim 36, wherein said specification string comprises a literal widthoption, said literal width option causing one of said plurality ofcolumns designated with said literal width option to be resized to awidth that equals the width of a word.
 42. The computer program productof claim 36, wherein said specification string comprises an exclamationpoint option, said exclamation point option causing one of saidplurality of columns to retain its current width.
 43. A program storagedevice readable by a machine, tangibly embodying a program ofinstructions executable by the machine to perform method steps forcausing a column on a computer display device to change in widthaccording to the change in size of a matrix, said method stepscomprising:receiving from a developer a request to build a matrix havinga plurality of rows and columns; receiving from the developer aspecification string for the width each of said plurality of columns insaid matrix; and storing code in the computer program corresponding tosaid request and said specification string.
 44. The program storagedevice of claim 43, wherein said specification string comprises anasterisk option, said asterisk option causing one of said plurality ofcolumns to be resized to a width equal to the remaining width of saidresized matrix.
 45. The program storage device of claim 43, wherein oneof said plurality of rows comprises a fixed row.
 46. The program storagedevice of claim 45, wherein said specification string comprises an equaloption, said equal option causing one of said plurality of columns to beresized to a width equal to the width of the longest text string in saidfixed row in said column.
 47. The program storage device of claim 43,wherein said specification string comprises a double equal option, saiddouble equal option causing one of said plurality of columns to beresized to a width equal to the width of the longest text string in saidcolumn.
 48. The program storage device of claim 43, wherein saidspecification string comprises a literal width option, said literalwidth option causing one of said plurality of columns designated withsaid literal width option to be resized to a width that equals the widthof a word.
 49. The program storage device of claim 43, wherein saidspecification string comprises an exclamation point option, saidexclamation point option causing one of said plurality of columns toretain its current width.
 50. A program storage device readable by amachine, tangibly embodying a program of instructions executable by themachine to perform method steps for causing a column on a computerdisplay device to change in width according to the change in size of amatrix, said method steps comprising:executing the computer program;receiving a resize or a change event; and using a specification string,wherein the string specification was previously defined by a developer,to resize the width of each of said columns in accordance with the widthof said resized or changed matrix.
 51. The program storage device ofclaim 50, wherein said specification string comprises an asteriskoption, said asterisk option causing one of said plurality of columns tobe resized to a width equal to the remaining width of said resizedmatrix.
 52. The program storage device of claim 50, wherein one of saidplurality of rows comprises a fixed row.
 53. The program storage deviceof claim 52, wherein said specification string comprises an equaloption, said equal option causing one of said plurality of columns to beresized to a width equal to the width of the longest text string in saidfixed row in said column.
 54. The program storage device of claim 50,wherein said specification string comprises a double equal option, saiddouble equal option causing one of said plurality of columns to beresized to a width equal to the width of the longest text string in saidcolumn.
 55. The program storage device of claim 50, wherein saidspecification string comprises a literal width option, said literalwidth option causing one of said plurality of columns designated withsaid literal width option to be resized to a width that equals the widthof a word.
 56. The program storage device of claim 50, wherein saidspecification string comprises an exclamation point option, saidexclamation point option causing one of said plurality of columns toretain its current width.